%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Slides
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}
\titlepage
\end{frame}

\begin{frame}{Índice}
  \tableofcontents
\end{frame}

\section{Introdução}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}{Introdução}
  \begin{block}{A evolução da Internet}
    A Internet começou a ser usada pelo cidadão comum e começou a se espalhar, um novo meio de comunicação sobre demanda.
    Cada vez mais a Internet se tornou parte da vida diária do cidadão, hoje em dia quase encrustada na sociedade de países
    desenvolvidos.
  \end{block}


\end{frame}

\begin{frame}{Introdução}
  \begin{block}{Os vilões}
    \begin{itemize}
    \item Explorar a Internet para o mal.
    \item Cibercrime.
    \item Malwares, trojans, vírus, worms, DoS ...
    \end{itemize}
  \end{block}
  
    \begin{block}{Os mocinhos}
    \begin{itemize}
    \item Proteger as redes de ataques
    \item Tornar a Internet segura
    \item Segurança da Internet => Segurança e comodidade ao cidadão
    \end{itemize}
  \end{block}
\end{frame}


\section{Objetivos}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Objetivos}
 \begin{itemize}
  \item Testar a viabilidade de um ataque de negação de serviço (usando TLS/SSL).
  \item Propor, testar, analisar, planejar mecanismos de defesa.
  \item Perfect Forward Secrecy, seguro ou inseguro?
  \item Estudar para defender(prevenir).
  \item Conhecimento aplicado ao lugar correto.
  \item Ferramentas de ataque não serão divulgadas.
 \end{itemize}
 
\end{frame}

\section{Motivações}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Motivações}
 \begin{block}{Por quê?}
  Muitos ataques de negação de serviço não são levados a sério (slowloris) antes de um ataque real.
  Estudar o quanto antes para prevenir.
 \end{block}
  \begin{block}{Ataques relacionados}
    \begin{itemize}
    \item Ataque de renegociação de chaves TLS/SSL - Grupo The Hacker's Choice.
    \item Sugestões de viabilidade do ataque por Vincent Bernat em seu blog.
    \end{itemize}
  \end{block}

\end{frame}

\begin{frame}{Motivações}
 \begin{block}{Perfect Forward Secrecy}
    \begin{itemize}
      \item Perfect Forward Secrecy usado em conexões seguras TLS/SSL.
      \item Escândalo envolvendo espionagem e a NSA.
      \item Valorização do Perfect Forward Secrecy, vale a pena?
      \item Sigilo e(ou) segurança?
    \end{itemize}
 \end{block}

\end{frame}


\section{Conceitos Básicos}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Ataques de negação de serviço - DoS}
 \begin{block}{Definição}
  Ataques de negação de serviço (DoS) são ataques virtuais que interropem o provimento de um serviço a usuários legítimos.
 \end{block}
\begin{itemize}
 \item DoS ou DDoS (ataques de DoS distribuídos).
 \item Exemplos: Slowloris, SYN flood, teardrop, ping of death, RUDY, etc...
 \item Alvos comuns: bancos, cartões de créditos, sites governamentais, organizações militares.
 \item Inundar o canal, derrubar o servidor, inviabilizar rotas, consumir todos os recursos, sobrecarregar o servidor...
\end{itemize}

\end{frame}

\begin{frame}{Defesas contra Ataques DoS}
 \begin{itemize}
  \item Diferenciar atacante de usuários legítimos.
  \item DoS evoluem rapidamente, a segurança têm que acompanhar.
  \item Dificuldade de testes, falta de ambiente (crime cibernético).
  \item Soluções contra DoS são duvidosas, falta benchmarks, adesão global (smurf attack).
 \end{itemize}


\end{frame}

\begin{frame}{TLS/SSL}
 \begin{block}{Definição}
  TLS/SSL são protocolos(criptográficos) de segurança que prometem um fluxo de dados cifrado, com autenticidade e integridade.
 \end{block}
\begin{block}{Funcionamento}
 O protocolo funciona em cima de conexões TCP, começando com um \emph{handshake}. No \emph{handshake} são determinados configurações de
 como a conexão funcionará, depois disso todo o tráfego será cifrado até o final da conexão TCP.
\end{block}

\end{frame}

\begin{frame}{TLS/SSL}
\begin{columns}
\column{0.8\textwidth}
     \begin{figure}
      \includegraphics[width=\textwidth]{sslPilha.png}
      \caption{Interação do protocolo nas camadas do protocolo TCP.}
      \label{fig:ssl}
    \end{figure}
    \end{columns}
\end{frame}


\begin{frame}{TLS/SSL}
 \begin{itemize}
  \item Como funciona: Conexão TCP, \emph{handshake}, conexão segura, fim da conexão segura e conexão TCP.
  \item \emph{ciphersuites}:conjunto de protocolos criptográficos usados na conexão(método de cifra, autenticação e integridade).
  \item Erros são mostrados na forma de alertas não cifrados.
 \end{itemize}

\end{frame}

\begin{frame}{Handshake TLS/SSL}
\begin{columns}
\column{0.6\textwidth}
     \begin{figure}
      \includegraphics[width=\textwidth]{handshake2.png}
      \label{fig:handshake}
    \end{figure}
    \end{columns}
\end{frame}

\section{Implementação}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Implementação}
 \begin{itemize}
  \item Códigos não serão divulgados, evitar mau uso das ferramentas.
  \item C/C++, QT\textregistered, API libevent.
  \item Várias ferramentas confeccionadas, 4 foram escolhidas para testes em ambiente controlado.  
 \end{itemize}
 \end{frame}
 
 \begin{frame}{As 4 ferramentas}
\begin{table}[H]
\centering
\label{tab:tools}
\begin{tabular}{|p{2cm}|p{2cm}|p{2cm}|p{2cm}|}
\hline
\multicolumn{4}{|c|}{Tabela de Ferramentas}\\
\hline
\multicolumn{2}{|c|}{Libevent}	&\multicolumn{2}{|c|}{QT\textregistered}\\
\hline
RSA	&DHE	&Versão 1	&Versão 2\\
\hline
Usa apenas \emph{ciphersuites} que usam RSA como protocolo de acordo de chaves	&Usa \emph{ciphersuites} que usam de Diffie \& Hellman	&Essa versão sempre espera uma mensagem do servidor para responder, seguindo a lógica normal do protocolo	&Essa versão manda respostas e requisições o mais rápido possível e sempre que possível\\
\hline
\end{tabular}
\end{table}
\end{frame}


\begin{frame}{Fluxograma}
\begin{columns}
\column{0.6\textwidth}
      \begin{figure}
      \includegraphics[width=\textwidth]{fluxoMono2.png}
      \label{fig:fluxo}
    \end{figure}
    \end{columns}
\end{frame}

\section{Testes}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Testes}
 \begin{itemize}
  \item Ambiente controlado e isolado.
  \item Ferramentas: Wireshark\textregistered e Módulo do servidor Apache\textregistered(mod\underline{ }status).
  \item As 4 ferramentas foram testadas com vários parâmetros diferentes e com resets entre os testes.
 \end{itemize}
 
\begin{table}[H]
\centering
\label{tab:config}
\begin{tabular}{|c|c|}
\hline
ATACANTE	&SERVIDOR\\
\hline
Notebook Samsung\textregistered	&Desktop customizado\\
\hline
Kubuntu(Ubuntu 13.10)	&Kubuntu(Ubuntu 13.10)\\
\hline
Intel\textregistered Core i7 2.2GHz	&Intel\textregistered Core i7 2.93GHz\\
\hline
8GB memória RAM	&8GB memória RAM\\
\hline
  &Apache Server 2.4.6(Ubuntu)\textregistered\\
\hline
\end{tabular}
\end{table}

\end{frame}

\begin{frame}{Bancada de testes}
\begin{columns}
 \column{0.9\textwidth}
      \begin{figure}
      \includegraphics[width=\textwidth]{bancada.png}
      \label{fig:bancada}
    \end{figure}
    \end{columns}
 
\end{frame}

\section{Resultados}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Ferramenta versão 1 QT}
 \begin{columns}
 \column{0.9\textwidth}
      \begin{figure}
      \includegraphics[width=\textwidth]{f1-tempo.png}
      \label{fig:f1-1}
    \end{figure}
    \end{columns}
\end{frame}

\begin{frame}{Ferramenta versão 1 QT}
 \begin{columns}
 \column{0.9\textwidth}
      \begin{figure}
      \includegraphics[width=\textwidth]{f1-cpu.png}
      \label{fig:f1-2}
    \end{figure}
    \end{columns}
\end{frame}

\begin{frame}{Ferramenta versão 1 QT}
 \begin{table}[H]
\centering
\label{tab:f1-conexoes}
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{4}{|c|}{Conexões ocupadas (ferramenta versão 1)}\\
\hline
{}	&\multicolumn{3}{|c|}{Tempo decorrido}\\
\hline
Número de \emph{threads}	&5 minutos	&10 minutos	&15 minutos\\
\hline
50 threads	&41/50	&39/50	&40/50\\
100 threads	&49/50	&49/50	&49/50\\
500 threads	&41/50	&41/50	&41/50\\
1000 threads	&41/50	&41/50	&42/50\\
5000 threads	&42/50	&42/50	&42/50\\
10000 threads	&42/50	&42/50	&41/50\\
\hline
\end{tabular}
\end{table}
\end{frame}


\begin{frame}{Ferramenta versão 2 QT}
 \begin{columns}
 \column{0.9\textwidth}
      \begin{figure}
      \includegraphics[width=\textwidth]{f2-tempo.png}
      \label{fig:f2-1}
    \end{figure}
    \end{columns}
\end{frame}

\begin{frame}{Ferramenta versão 2 QT}
 \begin{columns}
 \column{0.9\textwidth}
      \begin{figure}
      \includegraphics[width=\textwidth]{f2-cpu.png}
      \label{fig:f2-2}
    \end{figure}
    \end{columns}
\end{frame}

\begin{frame}{Ferramenta versão 2 QT}
  \begin{table}[H]
\centering
\label{tab:f2-conexoes}
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{4}{|c|}{Conexões ocupadas (ferramenta versão 2)}\\
\hline
{}	&\multicolumn{3}{|c|}{Tempo decorrido}\\
\hline
Número de \emph{threads}	&5 minutos	&10 minutos	&15 minutos\\
\hline
50 threads	&42/50	&41/50	&42/50\\
100 threads	&42/50	&43/50	&42/50\\
500 threads	&41/50	&42/50	&42/50\\
1000 threads	&41/50	&42/50	&42/50\\
5000 threads	&41/50	&42/50	&42/50\\
10000 threads	&42/50	&41/50	&41/50\\
\hline
\end{tabular}
\end{table}
\end{frame}

\begin{frame}{Ferramenta versão Libevent+RSA}
 \begin{columns}
 \column{0.9\textwidth}
      \begin{figure}
      \includegraphics[width=\textwidth]{f3-tempo.png}
      \label{fig:f3-1}
    \end{figure}
    \end{columns}
\end{frame}

\begin{frame}{Ferramenta versão Libevent+RSA}
 \begin{columns}
 \column{0.9\textwidth}
      \begin{figure}
      \includegraphics[width=\textwidth]{f3-cpu.png}
      \label{fig:f3-2}
    \end{figure}
    \end{columns}
\end{frame}

\begin{frame}{Ferramenta versão Libevent+RSA}
\begin{table}[H]
\centering
\label{tab:f3-conexoes}
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{4}{|c|}{Conexões ocupadas (ferramenta com libevent e RSA)}\\
\hline
{}	&\multicolumn{3}{|c|}{Tempo decorrido}\\
\hline
Número de \emph{threads}	&5 minutos	&10 minutos	&15 minutos\\
\hline
50 threads	&46/75	&48/75	&48/75\\
100 threads	&62/100	&62/100	&67/100\\
500 threads	&142/150	&132/150	&136/150\\
1000 threads	&143/150	&129/150	&142/150\\
5000 threads	&147/150	&129/150	&144/150\\
10000 threads	&146/150	&108/150	&133/150\\
\hline
\end{tabular}
\end{table}
\end{frame}

\begin{frame}{Ferramenta versão Libevent+DHE}
 \begin{columns}
 \column{0.9\textwidth}
      \begin{figure}
      \includegraphics[width=\textwidth]{f4-tempo.png}
      \label{fig:f4-1}
    \end{figure}
    \end{columns}
\end{frame}

\begin{frame}{Ferramenta versão Libevent+DHE}
 \begin{columns}
 \column{0.9\textwidth}
      \begin{figure}
      \includegraphics[width=\textwidth]{f4-cpu.png}
      \label{fig:f4-2}
    \end{figure}
    \end{columns}
\end{frame}

\begin{frame}{Ferramenta versão Libevent+DHE}
 \begin{table}[H]
\centering
\label{tab:f4-conexoes}
\begin{tabular}{|c|c|c|c|}
\hline
\multicolumn{4}{|c|}{Conexões ocupadas (ferramenta com libevent e DHE)}\\
\hline
{}	&\multicolumn{3}{|c|}{Tempo decorrido}\\
\hline
Número de \emph{threads}	&5 minutos	&10 minutos	&15 minutos\\
\hline
50 threads	&46/100	&42/100	&48/100\\
100 threads	&96/150	&95/150	&94/150\\
500 threads	&144/150	&136/150	&126/150\\
1000 threads	&134/150	&143/150	&144/150\\
5000 threads	&143/150	&140/150	&143/150\\
10000 threads	&141/150	&124/150	&125/150\\
\hline
\end{tabular}
\end{table}
\end{frame}




\section{Análise dos resultados}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{frame}{Análise dos resultados}
 \begin{itemize}
  \item a API libevent possuiu um resultado mais eficaz.
  \item número de conexões e o consumo de CPU possuem uma relação indireta com o aumento do tempo de resposta
  \item tempo de resposta tem um aumento definitivo com o ataque
  \item o ataque possui um caráter bem oscilante( possível necessidade de uma calibragem)
  \item valores bem altos de tempo de resposta, indicam viabilidade do ataque
  \item ataque em ambiente real deve ser mais eficiente (condições reais)
  
 \end{itemize}

\end{frame}

\section{Conclusões Finais}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}{Sobre o ataque}
 \begin{itemize}
  \item Ataque traz aumento real no tempo de resposta, ataque viável!
  \item Classificado como: DoS parcial de conteúdo, fluxo constante, alvo é o consumo de CPU e número de conexões.
  \item Em ambiente real: tráfego de outros usuários, maior distância(maior número de nós), clientes legítimos, aplicações no servidor.
 \end{itemize}

\end{frame}

\begin{frame}{Evolução do ataque}
 \begin{itemize}
  \item DoS => DDoS.
  \item API libevent + características de flooding devem potencializar o ataque.
  \item \emph{ciphersuites} mais onerosas (Perfect Forward Secrecy) podem ser exploradas, talvez uma varredura prévia.
 \end{itemize}

\end{frame}

\begin{frame}{Sugestões de Defesa}
 \begin{itemize}
  \item Pacote com 'lixo' só é percebido depois do estrago (decifrado), difícil prevenção.
  \item Detecção é viável, monitorar estatísticas de erros e alertas TLS/SSL e comparar a um limiar.
  \item Uma vez detectado pode-se usar uma firewall para bloquear o atacante (tráfego legítimo x tráfego atacante).
  \item Análise de \emph{ciphersuites}, habilitar apenas o necessário.
  \item Upgrade de hardware e aceleradores de SSL.
 \end{itemize}

\end{frame}

\begin{frame}
  \frametitle{Obrigado pela atenção!}
  \begin{center}
    {\Huge FIM!}
  \end{center}
\end{frame}

\section{Referências}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{frame}[allowframebreaks]
  \frametitle{Referências}
  \begin{itemize}
  \item Bernat V. SSL computational DoS mitigation.\url{http://vincent.bernat.im/en/blog/2011-ssl-dos-mitigation.html}
  \item Abbate, J.Inventing the Internet.Cambridge: MIT Press.1999.
  \item Mirkovic, J. and Reiher, P.A Taxonomy of DDoS Attack and DDoS Defense Mechanisms.ACM SIGCOMM Computer Communications Review.2004.
  \item Mitokrotsa, A. and Douligeris, C.DDoS attacks and defense mechanisms: classification and state-of-the-art.Computer Networks.2004.
  \item CERT CC. Trends in Denial of Service Attack Technology.2001.\url{http://www.cert.org/archive/pdf/DoS trends.pdf}.
  \item Slaviero, M.TLS/SSL and .NET Framework 4.0. 2011. \url{https://www.simple-talk.com/dotnet/.net-framework/tlsssl-and-.net-framework-4.0/}.
  \item Hock-Chuan, C.HTTP, Security with SSL. 2009. \url{http://www.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_SSL.html}.
  \item IBM\textregistered.Cipher Suite Definitions.\url{http://pic.dhe.ibm.com/infocenter/zos/v1r13/index.jsp?topic=\%2Fcom.ibm.zos.r13.gska100\%2Fcsdcwh.htm}.
  \item Goodin D.Tool lets low-end PC crash much more powerful webserver.\url{http://www.theregister.co.uk/2011/10/24/ssl_dos_tool_released/}.
  \item Horowitz M.Perfect Forward Secrecy can block the NSA from secure web pages, but no one uses it. 2013.\url{http://blogs.computerworld.com/encryption/22366/can-nsa-see-through-encrypted-web-pages-maybe-so}.
  \item RecordsBackground.com . American Tech Companies Wasting Their Time With Perfect Forward Secrecy. 2013. \url{http://blog.recordsbackground.com/2013/11/23/american-tech-companies-wasting-their-time-with-perfect-forward-secrecy/}.
  \item Brown M. Boost network performance with libevent and libev. 2010. \url{http://www.ibm.com/developerworks/aix/library/au-libev/}.
  \end{itemize}
\end{frame}